home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / basic / qbfaqr01.zip / KEYCODE.DOC < prev    next >
Text File  |  1992-03-08  |  2KB  |  57 lines

  1. ===========================================================================
  2.  BBS: « SMARTalec Toronto (416) 253-5900 »
  3. Date: 02-24-92 (02:07)             Number: 3015
  4. From: DAVE NAVARRO                 Refer#: NONE
  5.   To: MARK THOMPSON                 Recvd: NO  
  6. Subj: ZF = Z Flag?                   Conf: (135) R-QBasic
  7. ---------------------------------------------------------------------------
  8. Here is some PowerBASIC code to read a key from the keyboard (101 key
  9. aware).
  10.  
  11. The "zero" flag us actually bit 7 of the "flags" register..
  12.  
  13. 'GetKey - Check if a key is pending and return the key to your program
  14. '         Extended keyboard aware.
  15.  
  16. FUNCTION GetKey$ PUBLIC
  17.    REG 1, &HC000                            'BIOS get configuration
  18.    CALL INTERRUPT &H15
  19.    DEF SEG=REG(9)
  20.      ExKy%=(PEEK(REG(2)+5) AND 16)=16       'returns true if extended KB
  21.    DEF SEG
  22.    IF ExKy% THEN Extended
  23.    REG 1, &H0100                            'regular BIOS check key routine
  24.    CALL INTERRUPT &H16
  25.    IF (REG(0) AND 64)=64 THEN EXIT FUNCTION 'if zero flag then no key
  26.    REG 1, &H0000                            'regular BIOS read key routine
  27.    CALL INTERRUPT &H16
  28.    K1%=REG(1) AND &HFF                      'ASCII code in AL
  29.    K2%=(REG(1)\2 AND &H7FFF)\128            'scan code in AH
  30.    IF K1%=0 THEN
  31.      GetKey$=CHR$(0,K2%)
  32.     ELSE
  33.      GetKey$=CHR$(K1%)
  34.    END IF
  35.    EXIT FUNCTION
  36.  Extended:
  37.    REG 1, &H1100
  38.    CALL INTERRUPT &H16
  39.    IF (REG(0) AND 64)=64 THEN EXIT FUNCTION
  40.    REG 1, &H1000
  41.    CALL INTERRUPT &H16
  42.    K1%=REG(1) AND &HFF
  43.    K2%=(REG(1)\2 AND &H7FFF)\128
  44.    IF K1%=0 THEN
  45.      GetKey$=CHR$(0,K2%)
  46.     ELSEIF K1%=224 AND K2%>0 THEN
  47.      GetKey$=CHR$(0,K2%)
  48.     ELSE
  49.      GetKey$=CHR$(K1%)
  50.    END IF
  51. END FUNCTION
  52. ---
  53.  ■ OLX 2.1 ■ τh¡$  τåg£¡ⁿè  mªδë  ƒΓφm  ΓΣç¥ç£ëδ  Å$ç¡¡  çhåΓá¢τΣΓ$
  54.  
  55. PCRelay:ICEBOX -> #665 RelayNet (tm)
  56. 4.10              ╘═>THE ICEBOX BBS■718.793.8548■New York■<ASP>
  57.